package com.uzai.console.service.wechatprivate;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.wechatprivate.wxcontacts.*;
import com.uzai.console.entity.GroupSendJob;
import com.uzai.console.entity.es.EsWxContacts;
import com.uzai.console.vo.exportinfo.ExportAmountVo;
import com.uzai.console.vo.wechatprivate.wxcontacts.WxContactsBatchRefreshVo;
import com.uzai.console.vo.wechatprivate.wxcontacts.WxContactsInfoVo;

import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface WxContactsService {

    /**
     * 查询微信通讯录列表
     *
     * @param sxContactsQuery
     * @param tuominFlag 是否需要脱敏
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Page<WxContactsInfoVo> findWxContactsList(WxContactsQuery sxContactsQuery, Boolean tuominFlag);

    /**
     * 查询微信通讯录列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsQuery
     * @return null
     */
    Page<EsWxContacts> findWxContactsListForGroupSendMsg(WxContactsQuery wxContactsQuery);

    /**
     * 删除
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsIdListDto
     * @return null
     */
    void deleteWxContacts(WxContactsIdListDto wxContactsIdListDto);

    /**
     * 单个发送消息
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsSendMessageDto
     * @return null
     */
    void sendMessage(WxContactsSendMessageDto wxContactsSendMessageDto);

    /**
     * 通讯录注册
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsIdDto
     * @return null
     */
    void register(WxContactsIdDto wxContactsIdDto);

    /**
     * 刷新通讯录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    void refreshWxContacts(WxContactsRefreshDto wxContactsRefreshDto);

    /**
     * 批量刷新通讯录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    WxContactsBatchRefreshVo batchRefreshWxContacts(WxContactsBatchRefreshDto wxContactsBatchRefreshDto);

    /**
     * 根据单个机器人群发消息(异步)
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param addBatchSendMessageTaskDto
     * @return null
     */
    void groupSendMsgByDeviceUniqueId(AddBatchSendMessageTaskDto addBatchSendMessageTaskDto);

    /**
     * 通讯录批量注册
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxContactsQuery
     * @return null
     */
    void batchRegisterSync(WxContactsQuery wxContactsQuery);

    /**
     * 查询微信通讯录总记录数
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsQuery
     * @return null
     */
    long searchTotal(WxContactsQuery wxContactsQuery);

    /**
     * 查询微信通讯录所有记录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxContactsQuery
     * @return null
     */
    List<WxContactsInfoVo> scrollSearchAll(WxContactsQuery wxContactsQuery);

    /**
     * 根据单个机器人新建群发消息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param newBatchSendMessageTaskDto
     * @return null
     */
    Integer newBatchSendMessageTaskSync(NewBatchSendMessageTaskDto newBatchSendMessageTaskDto, Long groupSendJobParentId, Long deviceUniqueId, String loginName);

    /**
     * 查询根据单个机器人新建群发消息总数
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param newBatchSendMessageTaskDto
     * @return null
     */
    int findBatchSendMessageTaskSyncCount(NewBatchSendMessageTaskDto newBatchSendMessageTaskDto, Long deviceUniqueId);

    /**
     * 修复根据单个机器人新建群发消息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param groupSendJob
     * @return null
     */
    void repairBatchSendMessageTaskSync(GroupSendJob groupSendJob);

    /**
     * 导出记录数和总金额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxContactsQuery
     */
    ExportAmountVo getExportAmount(WxContactsQuery wxContactsQuery);

    /**
     * 批量同步微信备注到用户列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    void batchRefreshUserRemark(WxContactsBatchRefreshUserRemarkDto wxContactsBatchRefreshUserRemarkDto);

    /**
     * 删除单个机器人的通讯录
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     * @return null
     */
    void deleteWxContactsByDeviceUniqueId(Long deviceUniqueId, Long merId);

    /**
     * 通讯录批量删除
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxContactsQuery
     * @return null
     */
    void batchDeleteSync(WxContactsQuery wxContactsQuery);

}
